package com.gun.management.module.task.controller.admin.taskInfo.vo;

import com.gun.management.module.task.dal.dataobject.taskInfo.ShareContent;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 任务信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class TaskInfoRespVO {

    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("编号")
    private Long id;

    @Schema(description = "任务图标", example = "http://***.com/images/test.png")
    @ExcelProperty("任务图标")
    private String avatar;

    @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "邀请注册任务")
    @ExcelProperty("任务名称")
    private String name;

    @Schema(description = "任务简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "2025年邀请注册任务")
    @ExcelProperty("任务简介")
    private String taskIntroduct;

    @Schema(description = "任务类型(对应数据字典task_type)", example = "1")
    @ExcelProperty("任务类型(对应数据字典task_type)")
    private Long categoryId;

    @Schema(description = "奖励积分", example = "10")
    @ExcelProperty("奖励积分")
    private Integer rewardScore;

    @Schema(description = "受邀人注册成功", example = "10")
    @ExcelProperty("受邀人注册成功")
    private Integer rewardAfterRegistered;

    @Schema(description = "受邀人实名认证", example = "10")
    @ExcelProperty("受邀人实名认证")
    private Integer rewardAfterAuthed;

    @Schema(description = "受邀人授信通过", example = "10")
    @ExcelProperty("受邀人授信通过")
    private Integer rewardAfterGranted;

    @Schema(description = "受邀人完成提款", example = "10")
    @ExcelProperty("受邀人完成提款")
    private Integer rewardAfterWithdrawal;

    @Schema(description = "每天奖励次数", example = "20")
    @ExcelProperty("每天奖励次数")
    private Integer dayRewardTimes;

    @Schema(description = "累计最多奖励次数", example = "100")
    @ExcelProperty("累计最多奖励次数")
    private Integer maxRewardTimes;

    @Schema(description = "按钮名称", example = "邀请注册")
    @ExcelProperty("按钮名称")
    private String buttonName;

//    @Schema(description = "跳转URL地址", example = "https://www.iocoder.cn")
//    @ExcelProperty("跳转URL地址")
//    private String jumpUrl;


    /**
     * 跳转功能函数类型(对应数据字典function_type)
     */
    @Schema(description = "跳转功能函数类型(shareTo-分享好友或朋友圈 jumpToAppStore-跳转应用市场  pushWindow-跳转APP内页 getSessionID-授权登录 loginExceptionHandle-登录异常处理)", example = "shareTo")
    @ExcelProperty("跳转功能函数类型")
    private String functionType;

    /**
     * 内容类型(对应数据字content_type)
     */
    @Schema(description = "内容类型(01-分享微信好友纯文本 02-分享微信好友图片 03-分享微信好友链接 11-分享朋友圈纯文本 12-分享朋友圈图片 13-分享朋友圈链接)", example = "02")
    @ExcelProperty("内容类型")
    private String contentType;

    /**
     * 分享内容json
     */
    @Schema(description = "分享内容(json格式)", example = "{title:'分享给微信用户',url:'http://****.com/share',img:'http://********.com/images/test.png',desc:'this is test'}")
    @ExcelProperty("分享内容")
    private ShareContent shareContentDetail;


    @Schema(description = "状态(0-启用 1-禁用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("状态(0-启用 1-禁用)")
    private Integer status;

    @Schema(description = "详细规则", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("详细规则")
    private String content;

    @Schema(description = "备注", example = "你说的对")
    @ExcelProperty("备注")
    private String remark;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;


    /**
     * 排序号
     */
    @Schema(description = "排序号")
    @ExcelProperty("排序号")
    private Integer seqNo;

}